/*
 * Proto Streamer
 * Copyright (C) 2009 John Pritchard.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301 USA.
 */
package p.s;

/**
 * @author jdp
 */
public final class Mimetype 
    extends java.util.Properties
{

    private final static Mimetype Instance;
    static {
        try {
            Instance = new Mimetype();
        }
        catch (java.io.IOException exc){
            throw new java.lang.Error(exc);
        }
    }
    public final static String For(java.io.File file){
        return For(file.getName());
    }
    public final static String For(java.net.URI uri){
        return For(uri.getPath());
    }
    public final static String For(String string){
        int idx;

        idx = string.lastIndexOf('/');
        if (0 < idx)
            string = string.substring(idx+1);

        idx = string.lastIndexOf('.');
        if (0 < idx){
            string = string.substring(idx+1);
            return (String)Instance.getProperty(string);
        }
        return null;
    }


    private final static String Resource = "Mimetypes.properties";


    private Mimetype()
        throws java.io.IOException
    {
        super();
        java.io.InputStream in = this.getClass().getClassLoader().getResourceAsStream(Resource);
        if (null != in){
            try {
                this.load(in);
            }
            finally {
                in.close();
            }
        }
        else {
            throw new java.lang.IllegalStateException("Resource not found, '"+Resource+"'.");
        }
    }
}
